package com.leenmvc.core.utils.dictionary;

import com.leenmvc.core.security.entity.core.SysDict;

import java.util.List;
import java.util.Map;

/**
 * 字典表接口类
 */
public interface DictGet  {

    /**
     * 根据字典ID获取字典记录
     *
     * @param id
     * @return
     */
    public SysDict dictId(Object id);

    /**
     * 根据字典类型获取字典记录列表
     *
     * @param dictType
     * @return
     */
    public List<SysDict> dictType(String dictType);

    /**
     * 根据字典类型获取字典记录列表
     *
     * @param dictType
     * @return
     */
    public Map<String, Object> getMapByType(String dictType);

    /**
     * 同一类型的不包含pid的列表
     *
     * @param dictType
     * @return
     */
    public List<SysDict> typeListRidPid(String dictType);

    /**
     * 根据父ID获取
     *
     * @param pid
     * @return
     */
    public List<SysDict> dictPid(Object pid);

    /**
     * 根据字典类型和名字获取字典记录
     *
     * @param type
     * @param name
     * @return
     */
    public SysDict typeNameDict(String type, String name);

    /**
     * 根据字典类型和名字获取字典值
     *
     * @param type
     * @param name
     * @return
     */
    public String typeNameGet(String type, String name);

    /**
     * 插入一条数据到字典表
     *
     * @param sysDict
     * @return
     */
    public boolean dictInsert(SysDict sysDict);

    /**
     * 修改字典表（实体作为参数）
     *
     * @param sysDict
     * @return
     */
    public boolean dictUpdate(SysDict sysDict);

    /**
     * 修改字典表（Hashmap作为参数）
     *
     * @param params
     * @return
     */
    public int dictUpdate(Map<String, Object> params);

    /**
     * 删除字典表记录（实体作为参数）
     *
     * @param sysDict
     * @return
     */
    public boolean dictDelete(SysDict sysDict);

    /**
     * 根据ID删除记录
     *
     * @param id
     * @return
     */
    public boolean dictDelete(Object id);

}
